const knowDatasetApi = {
    /**
     * 知识库数据集列表
     *
     * @param params
     * @param {number} [params.page_no] 当前页码
     * @param {number} [params.page_size] 每页条数
     * @param {string} [params.keyword] 搜索关键字
     * @param {number} [params.status] 学习状态: [1=排队中,2=学习中,3=学习成功,4=学习失败]
     * @param {string} [params.archive_id] 文档编号
     * @returns {Promise<KnowDatasetListResponse[]>}
     * @author zero
     */
    lists(params: {
        page_no?: number;
        page_size?: number;
        keyword?: string;
        status?: number;
        archive_id: string;
    }): Promise<KnowDatasetListResponse[]> {
        return $request.get<KnowDatasetListResponse[]>({
            url: '/agent/know/dataset/lists',
            params
        })
    },

    /**
     * 知识库数据集详情
     *
     * @param uuid
     * @returns {Promise<KnowDatasetDetailResponse>}
     * @author zero
     */
    detail(uuid: string): Promise<KnowDatasetDetailResponse> {
        return $request.get<KnowDatasetDetailResponse>({
            url: '/agent/know/dataset/detail',
            params: {
                uuids: uuid
            }
        })
    },

    /**
     * 知识库数据集检测
     *
     * @param {string[]} uuids 数据集UUID
     * @returns {Promise<KnowDatasetInspectResponse[]>}
     * @author zero
     */
    inspect(uuids: string[]): Promise<KnowDatasetInspectResponse[]> {
        return $request.post<KnowDatasetInspectResponse[]>({
            url: '/agent/know/dataset/inspect',
            params: {
                uuids
            }
        })
    },

    /**
     * 知识库数据集插入
     *
     * @param params
     * @param {string} params.fid 文档编号
     * @param {string} params.question 问题内容
     * @param {string} params.answer 答案内容
     * @param {KnowDatasetAnnexType[]} [params.annex] 附件
     * @returns {Promise<any>}
     * @author zero
     */
    insert(params: {
        fid: string;
        question: string;
        answer: string;
        annex?: KnowDatasetAnnexType[];
    }): Promise<any> {
        return $request.post({
            url: '/agent/know/dataset/insert',
            params
        })
    },

    /**
     * 知识库数据集编辑
     *
     * @param params
     * @param {string} params.uuid 数据集UUID
     * @param {string} params.question 问题内容
     * @param {string} params.answer 答案内容
     * @param {KnowDatasetAnnexType[]} [params.annex] 附件
     * @returns {Promise<any>}
     * @author zero
     */
    update(params: {
        uuid: string;
        question: string;
        answer: string;
        annex?: KnowDatasetAnnexType[];
    }): Promise<any> {
        return $request.post({
            url: '/agent/know/dataset/update',
            params
        })
    },

    /**
     * 知识库数据集删除
     *
     * @param {string} kb 知识库编号
     * @param {string[]} uuids 数据集UUID
     * @returns {Promise<any>}
     * @author zero
     */
    delete(kb: string, uuids: string[]): Promise<any> {
        return $request.post({
            url: '/agent/know/dataset/delete',
            params: {
                kb,
                uuids
            }
        })
    },

    /**
     * 知识库数据集学习重试
     *
     * @param {string} kb 知识库编号
     * @param {string[]} uuids 要重试的数据集唯一标识符列表
     * @returns {Promise<any>}
     * @author zero
     */
    retry(kb: string, uuids: string[]): Promise<any> {
        return $request.post({
            url: '/agent/know/dataset/retry',
            params: {
                kb,
                uuids
            }
        })
    },

    /**
     * 知识库数据集搜索测试
     *
     * @param params
     * @param {string} params.kb 知识库编号
     * @param {string} params.text 搜索文本
     * @param {string} params.search_mode 检索模式
     * @param {number} params.search_tokens 引用上下
     * @param {number} params.search_similar 相似度值
     * @param {number} params.ranking_status 重排状态
     * @param {number} params.ranking_score 重排分数
     * @param {number} params.ranking_score 重排模型
     * @param {number} params.optimize_ask 问题优化
     * @param {number} params.optimize_model 问题模型
     * @returns {Promise<KnowDatasetTestingResponse[]>}
     * @author zero
     */
    testing(params: {
        kb: string;
        text: string;
        search_mode: string;
        search_tokens: number;
        search_similar: number;
        ranking_status: number;
        ranking_score: number;
        ranking_model?: string;
        optimize_ask: number;
        optimize_model?: string;
    }): Promise<KnowDatasetTestingResponse[]> {
        return $request.post({
            url: '/agent/know/dataset/testing',
            params
        })
    }
}

export default knowDatasetApi
